colorscheme:
yellow
violet
bw
Prihlásenie:
Login: Heslo:

Problem statement: zenit12kkd

D: Šifra
25 bodov Časový limit: 100 ms


Lukáš sa počas tréningového roztancovávania ocitol v podobnej situácii ako počas školského kola, avšak v inej roli. Vidí, ako si chlapec v jednom rohu posiela šifrované správy s krásnou tanečníčkou v opačnom rohu. Lukáš je teraz v roli jedného z ľudí, ktorí podávajú lístoček a ako správny zvedavý Man In The Middle by si rád prečítal posielané správy. Mohol by sa predsa naučiť niečo o nadväzovaní nových kontaktov!

Na rozdiel od Lukáša v školskom kole zvolil náš šifrant o niečo sofistikovanejší spôsob - substitučnú šifru. Pri substitučnej šifre nahrádzame písmená inými písmenami a všetky ostatné symboly nechávame na mieste. Uvažujme 26 veľkých písmen anglickej abecedy. Ak napríklad A nahrádzame znakom C, B nahrádzame znakom A a C nahrádzame znakom B, potom šifra textu "AB, BC." je "CA, AB.". Aby sme vedeli text jednoznačne dešifrovať, je potrebné, aby bolo každé písmeno obrazom práve jedného z písmen. Skutočnosť, ktoré písmeno sa zobrazí na ktoré je kľúčom k šifrovaniu a dešifrovaniu správ. Pre úspešnú komunikáciu musia túto informáciu mať obe komunikujúce strany. Zdá sa, že na začiatku komunikácie náš tanečník tento kľúč poslal tanečníčke. Lukáš bohužiaľ túto správu nezachytil, ale podarilo sa mu zachytiť dve správy, o ktorých vie ich šifrovanú aj nešifrovanú podobu, pretože sa pozeral cez rameno tanečníka. Tieto dve správy máte ako príklady vstupu a výstupu.

Na vstupe vášho programu bude tretia správa tanečníka, ktorá je šifrovaná rovnakým kľúčom ako uvedené dve v príklade. Vstup pozostáva len zo znakov veľkých anglických písmen, medzier, bodiek a symbolov nových riadkov (jeden znak \n, ASCII kód 10). Výstup bude rozšifrovaný text. Dbajte na presné zachovanie formátu správy, všetky nepísmenové znaky musia ostať na mieste! Nepredpokladajte o vstupe nič rozumné: ani že je text zmysluplný, ani že v ňom nesmú byť dve bodky za sebou, ani že neobsahuje prázdny riadok, ani že na konci riadku nie je medzera navyše (ktorú musíte uviesť vo výstupe)! Dĺžka textu je najviac 2000 znakov, vstup pozostáva z najviac 100 riadkov.
> Príklady:

vstup
S XJKYPGXPVX LJG LY SXCBMXMY PXTYF. PUJ LJG LX DBCYGSMY
DB EGNPVX X BWDYCBCXMY
NBENR
OVBEMXO.

výstup

Z AMFITEATRA SME SI ZAVOLALI TAXIK. TYM SME SA DOVIEZLI
DO CENTRA A OBDIVOVALI
NOCNU
WROCLAW.

    
  
vstup
C FXSDBJ HVBQVXJG AG EZUWX.

výstup
V KAZDOM PROGRAME JE CHYBA.





(C) MišoF, Zemčo. 2007 - 2013